home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / music / replayers / propacker2.1.asm < prev    next >
Encoding:
Assembly Source File  |  1980-01-04  |  20.2 KB  |  1,179 lines

  1.  
  2.     section    low,code_c
  3.     
  4. J:    move.l    4.w,a6
  5.     jsr    -132(a6)
  6.     bsr.b    mt_init
  7.  
  8. main:    cmp.b    #255,$dff006
  9.     bne.s    main
  10.  
  11.     move.w    #$444,$dff180
  12.     bsr.w    mt_music
  13.  
  14.     clr.w    $dff180
  15.     clr.w    d0
  16.     move.b    $dff006,d0
  17.     sub.w    #161,d0
  18.     cmp.w    maxraster(pc),d0
  19.     blt.b    mouse
  20.     move.w    d0,maxraster
  21.  
  22. mouse:    btst    #6,$bfe001
  23.     bne.b    main
  24.  
  25.     bsr.w    mt_end
  26.     move.l    4.w,a6
  27.     jsr    -138(a6)
  28.     move.w    maxraster(pc),d0
  29.     rts
  30.  
  31. maxraster:dc.w    0
  32.  
  33. *****************************************
  34. * Pro-Packer v2.1 Replay-Routine.    *
  35. * Based upon the PT1.1B-Replayer    *
  36. * by Lars 'ZAP' Hamre/Amiga Freelancers.*
  37. * Modified by Estrup/Static Bytes.    *
  38. *****************************************
  39.  
  40. mt_lev6use=        1        ; 0=NO, 1=YES
  41. mt_finetuneused=    1        ; 0=NO, 1=YES
  42.  
  43. mt_init    LEA    mt_data,A0
  44.     MOVE.L    A0,mt_SongDataPtr
  45.     LEA    250(A0),A1
  46.     MOVE.W    #511,D0
  47.     MOVEQ    #0,D1
  48. mtloop    MOVE.L    D1,D2
  49.     SUBQ.W    #1,D0
  50. mtloop2    MOVE.B    (A1)+,D1
  51.     CMP.W    D2,D1
  52.     BGT.S    mtloop
  53.     DBRA    D0,mtloop2
  54.     ADDQ    #1,D2
  55.  
  56.     MOVE.W    D2,D3
  57.     MULU    #128,D3
  58.     ADD.L    #766,D3
  59.     ADD.L    mt_SongDataPtr(PC),D3
  60.     MOVE.L    D3,mt_LWTPtr
  61.  
  62.     LEA    mt_SampleStarts(PC),A1
  63.     MULU    #128,D2
  64.     ADD.L    #762,D2
  65.     ADD.L    (A0,D2.L),D2
  66.     ADD.L    mt_SongDataPtr(PC),D2
  67.     ADDQ.L    #4,D2
  68.     MOVE.L    D2,A2
  69.     MOVEQ    #30,D0
  70. mtloop3    MOVE.L    A2,(A1)+
  71.     MOVEQ    #0,D1
  72.     MOVE.W    (A0),D1
  73.     ADD.L    D1,D1
  74.     ADD.L    D1,A2
  75.     LEA    8(A0),A0
  76.     DBRA    D0,mtloop3
  77.  
  78.     OR.B    #2,$BFE001
  79.     lea    mt_speed(PC),A4
  80.     MOVE.B    #6,(A4)
  81.     CLR.B    mt_counter-mt_speed(A4)
  82.     CLR.B    mt_SongPos-mt_speed(A4)
  83.     CLR.W    mt_PatternPos-mt_speed(A4)
  84. mt_end    LEA    $DFF096,A0
  85.     CLR.W    $12(A0)
  86.     CLR.W    $22(A0)
  87.     CLR.W    $32(A0)
  88.     CLR.W    $42(A0)
  89.     MOVE.W    #$F,(A0)
  90.     RTS
  91.  
  92. mt_music
  93.     MOVEM.L    D0-D4/D7/A0-A6,-(SP)
  94.     ADDQ.B    #1,mt_counter
  95.     MOVE.B    mt_counter(PC),D0
  96.     CMP.B    mt_speed(PC),D0
  97.     BLO.S    mt_NoNewNote
  98.     CLR.B    mt_counter
  99.     TST.B    mt_PattDelTime2
  100.     BEQ.S    mt_GetNewNote
  101.     BSR.S    mt_NoNewAllChannels
  102.     BRA.W    mt_dskip
  103.  
  104. mt_NoNewNote
  105.     BSR.S    mt_NoNewAllChannels
  106.     BRA.W    mt_NoNewPosYet
  107.  
  108. mt_NoNewAllChannels
  109.     LEA    $DFF090,A5
  110.     LEA    mt_chan1temp-44(PC),A6
  111.     BSR.W    mt_CheckEfx
  112.     BSR.W    mt_CheckEfx
  113.     BSR.W    mt_CheckEfx
  114.     BRA.W    mt_CheckEfx
  115.  
  116. mt_GetNewNote
  117.     MOVE.L    mt_SongDataPtr(PC),A0
  118.     LEA    (A0),A3
  119.     LEA    122(A0),A2    ;pattpo
  120.     LEA    762(A0),A0    ;patterndata
  121.     CLR.W    mt_DMACONtemp
  122.  
  123.     LEA    $DFF090,A5
  124.     LEA    mt_chan1temp-44(PC),A6
  125.     BSR.S    mt_DoVoice
  126.     BSR.S    mt_DoVoice
  127.     BSR.B    mt_DoVoice
  128.     BSR.B    mt_DoVoice
  129.     BRA.W    mt_SetDMA
  130.  
  131. mt_DoVoice
  132.     MOVEQ    #0,D0
  133.     MOVEQ    #0,D1
  134.     MOVE.B    mt_SongPos(PC),D0
  135.     LEA    128(A2),A2
  136.     MOVE.B    (A2,D0.W),D1
  137.     MOVE.W    mt_PatternPos(PC),D2
  138.     LSL    #7,D1
  139.     LSR.W    #1,D2
  140.     ADD.W    D2,D1
  141.     LEA    $10(A5),A5
  142.     LEA    44(A6),A6
  143.  
  144.     TST.L    (A6)
  145.     BNE.S    mt_plvskip
  146.     BSR.W    mt_PerNop
  147. mt_plvskip
  148.     MOVE.W    (A0,D1.W),D1
  149.     add.w    d1,d1
  150.     add.w    d1,d1
  151.     MOVE.L    A0,-(sp)
  152.     MOVE.L    mt_LWTPtr(PC),A0
  153.     MOVE.L    (A0,D1.W),(A6)
  154.     MOVE.L    (sp)+,A0
  155.     MOVE.B    2(A6),D2
  156.     AND.L    #$F0,D2
  157.     LSR.B    #4,D2
  158.     MOVE.B    (A6),D0
  159.     AND.B    #$F0,D0
  160.     OR.B    D0,D2
  161.     BEQ.B    mt_SetRegs
  162.     MOVEQ    #0,D3
  163.     LEA    mt_SampleStarts(PC),A1
  164.     SUBQ    #1,D2
  165.     MOVE    D2,D4
  166.     ADD    D2,D2
  167.     ADD    D2,D2
  168.     LSL    #3,D4
  169.     MOVE.L    (A1,D2.L),4(A6)
  170.     MOVE.W    (A3,D4.W),8(A6)
  171.     MOVE.W    (A3,D4.W),40(A6)
  172.     MOVE.W    2(A3,D4.W),18(A6)
  173.     MOVE.L    4(A6),D2    ; Get start
  174.     MOVE.W    4(A3,D4.W),D3    ; Get repeat
  175.     BEQ.S    mt_NoLoop
  176.     MOVE.W    D3,D0        ; Get repeat
  177.     ADD.W    D3,D3
  178.     ADD.L    D3,D2        ; Add repeat
  179.     ADD.W    6(A3,D4.W),D0    ; Add replen
  180.     MOVE.W    D0,8(A6)
  181.  
  182. mt_NoLoop
  183.     MOVE.L    D2,10(A6)
  184.     MOVE.L    D2,36(A6)
  185.     MOVE.W    6(A3,D4.W),14(A6)    ; Save replen
  186.     MOVE.B    19(A6),9(A5)    ; Set volume
  187. mt_SetRegs
  188.     MOVE.W    (A6),D0
  189.     AND.W    #$0FFF,D0
  190.     BEQ.W    mt_CheckMoreEfx    ; If no note
  191.  
  192.     IF mt_finetuneused=1 THEN
  193.     MOVE.W    2(A6),D0
  194.     AND.W    #$0FF0,D0
  195.     CMP.W    #$0E50,D0
  196.     BEQ.S    mt_DoSetFineTune
  197.     ENDC
  198.  
  199.     MOVE.B    2(A6),D0
  200.     AND.B    #$0F,D0
  201.     CMP.B    #3,D0    ; TonePortamento
  202.     BEQ.S    mt_ChkTonePorta
  203.     CMP.B    #5,D0
  204.     BEQ.S    mt_ChkTonePorta
  205.     CMP.B    #9,D0    ; Sample Offset
  206.     BNE.S    mt_SetPeriod
  207.     BSR.W    mt_CheckMoreEfx
  208.     BRA.S    mt_SetPeriod
  209.  
  210. mt_ChkTonePorta
  211.     BSR.W    mt_SetTonePorta
  212.     BRA.W    mt_CheckMoreEfx
  213.  
  214. mt_DoSetFineTune
  215.     BSR.W    mt_SetFineTune
  216.  
  217. mt_SetPeriod
  218.     MOVEM.L    D1/A1,-(SP)
  219.     MOVE.W    (A6),D1
  220.     AND.W    #$0FFF,D1
  221.  
  222.     IF mt_finetuneused=0 THEN
  223.     MOVE.W    D1,16(A6)
  224.  
  225.     ELSE
  226.  
  227. mt_SetPeriod2
  228.     LEA    mt_PeriodTable(PC),A1
  229.     MOVEQ    #36,D7
  230. mt_ftuloop
  231.     CMP.W    (A1)+,D1
  232.     BHS.S    mt_ftufound
  233.     DBRA    D7,mt_ftuloop
  234. mt_ftufound
  235.     MOVEQ    #0,D1
  236.     MOVE.B    18(A6),D1
  237.     LSL    #3,D1
  238.     MOVE    D1,D0
  239.     LSL    #3,D1
  240.     ADD    D0,D1
  241.     MOVE.W    -2(A1,D1.W),16(A6)
  242.     ENDC
  243.  
  244.     MOVEM.L    (SP)+,D1/A1
  245.  
  246.     MOVE.W    2(A6),D0
  247.     AND.W    #$0FF0,D0
  248.     CMP.W    #$0ED0,D0 ; Notedelay
  249.     BEQ.W    mt_CheckMoreEfx
  250.  
  251.     MOVE.W    20(A6),$DFF096
  252.     BTST    #2,30(A6)
  253.     BNE.S    mt_vibnoc
  254.     CLR.B    27(A6)
  255. mt_vibnoc
  256.     BTST    #6,30(A6)
  257.     BNE.S    mt_trenoc
  258.     CLR.B    29(A6)
  259. mt_trenoc
  260.     MOVE.L    4(A6),(A5)    ; Set start
  261.     MOVE.W    8(A6),4(A5)    ; Set length
  262.     MOVE.W    16(A6),6(A5)    ; Set period
  263.     MOVE.W    20(A6),D0
  264.     OR.W    D0,mt_DMACONtemp
  265.     BRA.W    mt_CheckMoreEfx
  266.  
  267. mt_SetDMA
  268.     IF mt_lev6use=1 THEN
  269.     lea    $bfd000,a3
  270.     move.b    #$7f,$d00(a3)
  271.     move.w    #$2000,$dff09c
  272.     move.w    #$a000,$dff09a
  273.     move.l    $78.w,mt_oldirq
  274.     move.l    #mt_irq1,$78.w
  275.     moveq    #0,d0
  276.     move.b    d0,$e00(a3)
  277.     move.b    #$a8,$400(a3)
  278.     move.b    d0,$500(a3)
  279.     move.b    #$11,$e00(a3)
  280.     move.b    #$81,$d00(a3)
  281.     OR.W    #$8000,mt_DMACONtemp
  282.     BRA.w    mt_dskip
  283.  
  284.     ELSE
  285.     OR.W    #$8000,mt_DMACONtemp
  286.     bsr.w    mt_WaitDMA
  287.     ENDC
  288.  
  289.     IF mt_lev6use=1 THEN
  290. mt_irq1:tst.b    $bfdd00
  291.     MOVE.W    mt_dmacontemp(pc),$DFF096
  292.     move.w    #$2000,$dff09c
  293.     move.l    #mt_irq2,$78.w
  294.     rte
  295.  
  296.     ELSE
  297.     MOVE.W    mt_dmacontemp(pc),$DFF096
  298.     bsr.w    mt_WaitDMA
  299.     ENDC
  300.  
  301.     IF mt_lev6use=1 THEN
  302. mt_irq2:tst.b    $bfdd00
  303.     movem.l    a5-a6,-(a7)
  304.     ENDC
  305.  
  306.     LEA    $DFF0A0,A5
  307.     LEA    mt_chan1temp(PC),A6
  308.     MOVE.L    10(A6),(A5)
  309.     MOVE.W    14(A6),4(A5)
  310.     MOVE.L    54(A6),$10(A5)
  311.     MOVE.W    58(A6),$14(A5)
  312.     MOVE.L    98(A6),$20(A5)
  313.     MOVE.W    102(A6),$24(A5)
  314.     MOVE.L    142(A6),$30(A5)
  315.     MOVE.W    146(A6),$34(A5)
  316.  
  317.     IF mt_lev6use=1 THEN
  318.     move.b    #0,$bfde00
  319.     move.b    #$7f,$bfdd00
  320.     move.l    mt_oldirq(pc),$78.w
  321.     move.w    #$2000,$dff09c
  322.     movem.l    (a7)+,a5-a6
  323.     rte
  324.     ENDC
  325.  
  326. mt_dskip
  327.     lea    mt_speed(PC),A4
  328.     ADDQ.W    #4,mt_PatternPos-mt_speed(A4)
  329.     MOVE.B    mt_PattDelTime-mt_speed(A4),D0
  330.     BEQ.S    mt_dskc
  331.     MOVE.B    D0,mt_PattDelTime2-mt_speed(A4)
  332.     CLR.B    mt_PattDelTime-mt_speed(A4)
  333. mt_dskc    TST.B    mt_PattDelTime2-mt_speed(A4)
  334.     BEQ.S    mt_dska
  335.     SUBQ.B    #1,mt_PattDelTime2-mt_speed(A4)
  336.     BEQ.S    mt_dska
  337.     SUBQ.W    #4,mt_PatternPos-mt_speed(A4)
  338. mt_dska    TST.B    mt_PBreakFlag-mt_speed(A4)
  339.     BEQ.S    mt_nnpysk
  340.     SF    mt_PBreakFlag-mt_speed(A4)
  341.     MOVEQ    #0,D0
  342.     MOVE.B    mt_PBreakPos(PC),D0
  343.     CLR.B    mt_PBreakPos-mt_speed(A4)
  344.     LSL    #2,D0
  345.     MOVE.W    D0,mt_PatternPos-mt_speed(A4)
  346. mt_nnpysk
  347.     CMP.W    #256,mt_PatternPos-mt_speed(A4)
  348.     BLO.S    mt_NoNewPosYet
  349. mt_NextPosition    
  350.     MOVEQ    #0,D0
  351.     MOVE.B    mt_PBreakPos(PC),D0
  352.     LSL    #2,D0
  353.     MOVE.W    D0,mt_PatternPos-mt_speed(A4)
  354.     CLR.B    mt_PBreakPos-mt_speed(A4)
  355.     CLR.B    mt_PosJumpFlag-mt_speed(A4)
  356.     ADDQ.B    #1,mt_SongPos-mt_speed(A4)
  357.     AND.B    #$7F,mt_SongPos-mt_speed(A4)
  358.     MOVE.B    mt_SongPos(PC),D1
  359.     MOVE.L    mt_SongDataPtr(PC),A0
  360.     CMP.B    248(A0),D1
  361.     BLO.S    mt_NoNewPosYet
  362.     CLR.B    mt_SongPos-mt_speed(A4)
  363. mt_NoNewPosYet    
  364.     TST.B    mt_PosJumpFlag-mt_speed(A4)
  365.     BNE.S    mt_NextPosition
  366.     MOVEM.L    (SP)+,D0-D4/D7/A0-A6
  367.     RTS
  368.  
  369. mt_CheckEfx
  370.     LEA    $10(A5),A5
  371.     LEA    44(A6),A6
  372.     BSR.W    mt_UpdateFunk
  373.     MOVE.W    2(A6),D0
  374.     AND.W    #$0FFF,D0
  375.     BEQ.S    mt_PerNop
  376.     MOVE.B    2(A6),D0
  377.     MOVEQ    #$0F,D1
  378.     AND.L    D1,D0
  379.     BEQ.S    mt_Arpeggio
  380.     SUBQ    #1,D0
  381.     BEQ.W    mt_PortaUp
  382.     SUBQ    #1,D0
  383.     BEQ.W    mt_PortaDown
  384.     SUBQ    #1,D0
  385.     BEQ.W    mt_TonePortamento
  386.     SUBQ    #1,D0
  387.     BEQ.W    mt_Vibrato
  388.     SUBQ    #1,D0
  389.     BEQ.W    mt_TonePlusVolSlide
  390.     SUBQ    #1,D0
  391.     BEQ.W    mt_VibratoPlusVolSlide
  392.     SUBQ    #8,D0
  393.     BEQ.W    mt_E_Commands
  394. SetBack    MOVE.W    16(A6),6(A5)
  395.     ADDQ    #7,D0
  396.     BEQ.W    mt_Tremolo
  397.     SUBQ    #3,D0
  398.     BEQ.W    mt_VolumeSlide
  399. mt_Return2
  400.     RTS
  401.  
  402. mt_PerNop
  403.     MOVE.W    16(A6),6(A5)
  404.     RTS
  405.  
  406. mt_Arpeggio
  407.     MOVEQ    #0,D0
  408.     MOVE.B    mt_counter(PC),D0
  409.     DIVS    #3,D0
  410.     SWAP    D0
  411.     TST.W    D0
  412.     BEQ.S    mt_Arpeggio2
  413.     SUBQ    #2,D0
  414.     BEQ.S    mt_Arpeggio1
  415.     MOVEQ    #0,D0
  416.     MOVE.B    3(A6),D0
  417.     LSR.B    #4,D0
  418.     BRA.S    mt_Arpeggio3
  419.  
  420. mt_Arpeggio2
  421.     MOVE.W    16(A6),6(A5)
  422.     RTS
  423.  
  424. mt_Arpeggio1
  425.     MOVE.B    3(A6),D0
  426.     AND.W    #15,D0
  427. mt_Arpeggio3
  428.     ADD.W    D0,D0
  429.     LEA    mt_PeriodTable(PC),A0
  430.  
  431.     IF mt_finetuneused=1 THEN
  432.     MOVEQ    #0,D1
  433.     MOVE.B    18(A6),D1
  434.     LSL    #3,D1
  435.     MOVE    D1,D2
  436.     LSL    #3,D1
  437.     ADD    D2,D1
  438.     ADD.L    D1,A0
  439.     ENDC
  440.  
  441.     MOVE.W    16(A6),D1
  442.     MOVEQ    #36,D7
  443. mt_arploop
  444.     CMP.W    (A0)+,D1
  445.     BHS.S    mt_Arpeggio4
  446.     DBRA    D7,mt_arploop
  447.     RTS
  448.  
  449. mt_Arpeggio4
  450.     MOVE.W    -2(A0,D0.W),6(A5)
  451.     RTS
  452.  
  453. mt_FinePortaUp
  454.     TST.B    mt_counter
  455.     BNE.S    mt_Return2
  456.     MOVE.B    #$0F,mt_LowMask
  457. mt_PortaUp
  458.     MOVEQ    #0,D0
  459.     MOVE.B    3(A6),D0
  460.     AND.B    mt_LowMask(PC),D0
  461.     MOVE.B    #$FF,mt_LowMask
  462.     SUB.W    D0,16(A6)
  463.     MOVE.W    16(A6),D0
  464.     AND.W    #$0FFF,D0
  465.     CMP.W    #113,D0
  466.     BPL.S    mt_PortaUskip
  467.     AND.W    #$F000,16(A6)
  468.     OR.W    #113,16(A6)
  469. mt_PortaUskip
  470.     MOVE.W    16(A6),D0
  471.     AND.W    #$0FFF,D0
  472.     MOVE.W    D0,6(A5)
  473.     RTS    
  474.  
  475. mt_FinePortaDown
  476.     TST.B    mt_counter
  477.     BNE.W    mt_Return2
  478.     MOVE.B    #$0F,mt_LowMask
  479. mt_PortaDown
  480.     MOVEQ    #0,D0
  481.     MOVE.B    3(A6),D0
  482.     AND.B    mt_LowMask(PC),D0
  483.     MOVE.B    #$FF,mt_LowMask
  484.     ADD.W    D0,16(A6)
  485.     MOVE.W    16(A6),D0
  486.     AND.W    #$0FFF,D0
  487.     CMP.W    #856,D0
  488.     BMI.S    mt_PortaDskip
  489.     AND.W    #$F000,16(A6)
  490.     OR.W    #856,16(A6)
  491. mt_PortaDskip
  492.     MOVE.W    16(A6),D0
  493.     AND.W    #$0FFF,D0
  494.     MOVE.W    D0,6(A5)
  495.     RTS
  496.  
  497. mt_SetTonePorta
  498.     MOVEM.L    A0,-(SP)
  499.     MOVE.W    (A6),D2
  500.     AND.W    #$0FFF,D2
  501.     LEA    mt_PeriodTable(PC),A0
  502.  
  503.     IF    mt_finetuneused=1 THEN
  504.     MOVEQ    #0,D0
  505.     MOVE.B    18(A6),D0
  506.     ADD    D0,D0
  507.     MOVE    D0,D7
  508.     ADD    D0,D0
  509.     ADD    D0,D0
  510.     ADD    D0,D7
  511.     LSL    #3,D0
  512.     ADD    D7,D0
  513.     ADD.L    D0,A0
  514.     ENDC
  515.  
  516.     MOVEQ    #0,D0
  517. mt_StpLoop
  518.     CMP.W    (A0,D0.W),D2
  519.     BHS.S    mt_StpFound
  520.     ADDQ    #2,D0
  521.     CMP.W    #37*2,D0
  522.     BLO.S    mt_StpLoop
  523.     MOVEQ    #35*2,D0
  524. mt_StpFound
  525.     BTST    #3,18(A6)
  526.     BEQ.S    mt_StpGoss
  527.     TST.W    D0
  528.     BEQ.S    mt_StpGoss
  529.     SUBQ    #2,D0
  530. mt_StpGoss
  531.     MOVE.W    (A0,D0.W),D2
  532.     MOVE.L    (SP)+,A0
  533.     MOVE.W    D2,24(A6)
  534.     MOVE.W    16(A6),D0
  535.     CLR.B    22(A6)
  536.     CMP.W    D0,D2
  537.     BEQ.S    mt_ClearTonePorta
  538.     BGE.W    mt_Return2
  539.     MOVE.B    #1,22(A6)
  540.     RTS
  541.  
  542. mt_ClearTonePorta
  543.     CLR.W    24(A6)
  544.     RTS
  545.  
  546. mt_TonePortamento
  547.     MOVE.B    3(A6),D0
  548.     BEQ.S    mt_TonePortNoChange
  549.     MOVE.B    D0,23(A6)
  550.     CLR.B    3(A6)
  551. mt_TonePortNoChange
  552.     TST.W    24(A6)
  553.     BEQ.W    mt_Return2
  554.     MOVEQ    #0,D0
  555.     MOVE.B    23(A6),D0
  556.     TST.B    22(A6)
  557.     BNE.S    mt_TonePortaUp
  558. mt_TonePortaDown
  559.     ADD.W    D0,16(A6)
  560.     MOVE.W    24(A6),D0
  561.     CMP.W    16(A6),D0
  562.     BGT.S    mt_TonePortaSetPer
  563.     MOVE.W    24(A6),16(A6)
  564.     CLR.W    24(A6)
  565.     BRA.S    mt_TonePortaSetPer
  566.  
  567. mt_TonePortaUp
  568.     SUB.W    D0,16(A6)
  569.     MOVE.W    24(A6),D0
  570.     CMP.W    16(A6),D0
  571.     BLT.S    mt_TonePortaSetPer
  572.     MOVE.W    24(A6),16(A6)
  573.     CLR.W    24(A6)
  574.  
  575. mt_TonePortaSetPer
  576.     MOVE.W    16(A6),D2
  577.     MOVE.B    31(A6),D0
  578.     AND.B    #$0F,D0
  579.     BEQ.S    mt_GlissSkip
  580.     LEA    mt_PeriodTable(PC),A0
  581.  
  582.     IF mt_finetuneused=1 THEN
  583.     MOVEQ    #0,D0
  584.     MOVE.B    18(A6),D0
  585.     LSL    #3,D0
  586.     MOVE    D0,D1
  587.     LSL    #3,D0
  588.     ADD    D1,D0
  589.     ADD.L    D0,A0
  590.     ENDC
  591.  
  592.     MOVEQ    #0,D0
  593. mt_GlissLoop
  594.     CMP.W    (A0,D0.W),D2
  595.     BHS.S    mt_GlissFound
  596.     ADDQ    #2,D0
  597.     CMP.W    #36*2,D0
  598.     BLO.S    mt_GlissLoop
  599.     MOVEQ    #35*2,D0
  600. mt_GlissFound
  601.     MOVE.W    (A0,D0.W),D2
  602. mt_GlissSkip
  603.     MOVE.W    D2,6(A5) ; Set period
  604.     RTS
  605.  
  606. mt_Vibrato
  607.     MOVE.B    3(A6),D0
  608.     BEQ.S    mt_Vibrato2
  609.     MOVE.B    26(A6),D2
  610.     AND.B    #$0F,D0
  611.     BEQ.S    mt_vibskip
  612.     AND.B    #$F0,D2
  613.     OR.B    D0,D2
  614. mt_vibskip
  615.     MOVE.B    3(A6),D0
  616.     AND.B    #$F0,D0
  617.     BEQ.S    mt_vibskip2
  618.     AND.B    #$0F,D2
  619.     OR.B    D0,D2
  620. mt_vibskip2
  621.     MOVE.B    D2,26(A6)
  622. mt_Vibrato2
  623.     MOVE.B    27(A6),D0
  624.     LEA    mt_VibratoTable(PC),A4
  625.     LSR.W    #2,D0
  626.     AND.W    #$001F,D0
  627.     MOVE.B    30(A6),D2
  628.     AND.W    #$03,D2
  629.     BEQ.S    mt_vib_sine
  630.     LSL.B    #3,D0
  631.     CMP.B    #1,D2
  632.     BEQ.S    mt_vib_rampdown
  633.     MOVE.B    #255,D2
  634.     BRA.S    mt_vib_set
  635. mt_vib_rampdown
  636.     TST.B    27(A6)
  637.     BPL.S    mt_vib_rampdown2
  638.     MOVE.B    #255,D2
  639.     SUB.B    D0,D2
  640.     BRA.S    mt_vib_set
  641. mt_vib_rampdown2
  642.     MOVE.B    D0,D2
  643.     BRA.S    mt_vib_set
  644. mt_vib_sine
  645.     MOVE.B    0(A4,D0.W),D2
  646. mt_vib_set
  647.     MOVE.B    26(A6),D0
  648.     AND.W    #15,D0
  649.     MULU    D0,D2
  650.     LSR.W    #7,D2
  651.     MOVE.W    16(A6),D0
  652.     TST.B    27(A6)
  653.     BMI.S    mt_VibratoNeg
  654.     ADD.W    D2,D0
  655.     BRA.S    mt_Vibrato3
  656. mt_VibratoNeg
  657.     SUB.W    D2,D0
  658. mt_Vibrato3
  659.     MOVE.W    D0,6(A5)
  660.     MOVE.B    26(A6),D0
  661.     LSR.W    #2,D0
  662.     AND.W    #$003C,D0
  663.     ADD.B    D0,27(A6)
  664.     RTS
  665.  
  666. mt_TonePlusVolSlide
  667.     BSR.W    mt_TonePortNoChange
  668.     BRA.W    mt_VolumeSlide
  669.  
  670. mt_VibratoPlusVolSlide
  671.     BSR.S    mt_Vibrato2
  672.     BRA.W    mt_VolumeSlide
  673.  
  674. mt_Tremolo
  675.     MOVE.B    3(A6),D0
  676.     BEQ.S    mt_Tremolo2
  677.     MOVE.B    28(A6),D2
  678.     AND.B    #$0F,D0
  679.     BEQ.S    mt_treskip
  680.     AND.B    #$F0,D2
  681.     OR.B    D0,D2
  682. mt_treskip
  683.     MOVE.B    3(A6),D0
  684.     AND.B    #$F0,D0
  685.     BEQ.S    mt_treskip2
  686.     AND.B    #$0F,D2
  687.     OR.B    D0,D2
  688. mt_treskip2
  689.     MOVE.B    D2,28(A6)
  690. mt_Tremolo2
  691.     MOVE.B    29(A6),D0
  692.     LEA    mt_VibratoTable(PC),A4
  693.     LSR.W    #2,D0
  694.     AND.W    #$001F,D0
  695.     MOVEQ    #0,D2
  696.     MOVE.B    30(A6),D2
  697.     LSR.B    #4,D2
  698.     AND.B    #$03,D2
  699.     BEQ.S    mt_tre_sine
  700.     LSL.B    #3,D0
  701.     CMP.B    #1,D2
  702.     BEQ.S    mt_tre_rampdown
  703.     MOVE.B    #255,D2
  704.     BRA.S    mt_tre_set
  705. mt_tre_rampdown
  706.     TST.B    27(A6)
  707.     BPL.S    mt_tre_rampdown2
  708.     MOVE.B    #255,D2
  709.     SUB.B    D0,D2
  710.     BRA.S    mt_tre_set
  711. mt_tre_rampdown2
  712.     MOVE.B    D0,D2
  713.     BRA.S    mt_tre_set
  714. mt_tre_sine
  715.     MOVE.B    0(A4,D0.W),D2
  716. mt_tre_set
  717.     MOVE.B    28(A6),D0
  718.     AND.W    #15,D0
  719.     MULU    D0,D2
  720.     LSR.W    #6,D2
  721.     MOVEQ    #0,D0
  722.     MOVE.B    19(A6),D0
  723.     TST.B    29(A6)
  724.     BMI.S    mt_TremoloNeg
  725.     ADD.W    D2,D0
  726.     BRA.S    mt_Tremolo3
  727. mt_TremoloNeg
  728.     SUB.W    D2,D0
  729. mt_Tremolo3
  730.     BPL.S    mt_TremoloSkip
  731.     CLR.W    D0
  732. mt_TremoloSkip
  733.     CMP.W    #$40,D0
  734.     BLS.S    mt_TremoloOk
  735.     MOVE.W    #$40,D0
  736. mt_TremoloOk
  737.     MOVE.W    D0,8(A5)
  738.     MOVE.B    28(A6),D0
  739.     LSR.W    #2,D0
  740.     AND.W    #$003C,D0
  741.     ADD.B    D0,29(A6)
  742.     RTS
  743.  
  744. mt_SampleOffset
  745.     MOVEQ    #0,D0
  746.     MOVE.B    3(A6),D0
  747.     BEQ.S    mt_sononew
  748.     MOVE.B    D0,32(A6)
  749. mt_sononew
  750.     MOVE.B    32(A6),D0
  751.     LSL.W    #7,D0
  752.     CMP.W    8(A6),D0
  753.     BGE.S    mt_sofskip
  754.     SUB.W    D0,8(A6)
  755.     ADD.W    D0,D0
  756.     ADD.L    D0,4(A6)
  757.     RTS
  758. mt_sofskip
  759.     MOVE.W    #$0001,8(A6)
  760.     RTS
  761.  
  762. mt_VolumeSlide
  763.     MOVEQ    #0,D0
  764.     MOVE.B    3(A6),D0
  765.     LSR.B    #4,D0
  766.     TST.B    D0
  767.     BEQ.S    mt_VolSlideDown
  768. mt_VolSlideUp
  769.     ADD.B    D0,19(A6)
  770.     CMP.B    #$40,19(A6)
  771.     BMI.S    mt_vsuskip
  772.     MOVE.B    #$40,19(A6)
  773. mt_vsuskip
  774.     MOVE.B    19(A6),9(A5)
  775.     RTS
  776.  
  777. mt_VolSlideDown
  778.     MOVE.B    3(A6),D0
  779.     AND.W    #$0F,D0
  780. mt_VolSlideDown2
  781.     SUB.B    D0,19(A6)
  782.     BPL.S    mt_vsdskip
  783.     CLR.B    19(A6)
  784. mt_vsdskip
  785.     MOVE.B    19(A6),9(A5)
  786.     RTS
  787.  
  788. mt_PositionJump
  789.     MOVE.B    3(A6),D0
  790.     SUBQ    #1,D0
  791.     MOVE.B    D0,mt_SongPos
  792. mt_pj2    CLR.B    mt_PBreakPos
  793.     ST     mt_PosJumpFlag
  794.     RTS
  795.  
  796. mt_VolumeChange
  797.     MOVE.B    3(A6),D0
  798.     CMP.B    #$40,D0
  799.     BLS.S    mt_VolumeOk
  800.     MOVEQ    #$40,D0
  801. mt_VolumeOk
  802.     MOVE.B    D0,19(A6)
  803.     MOVE.B    D0,9(A5)
  804.     RTS
  805.  
  806. mt_PatternBreak
  807.     MOVEQ    #0,D0
  808.     MOVE.B    3(A6),D0
  809.     MOVE.W    D0,D2
  810.     LSR.B    #4,D0
  811.     ADD    D0,D0
  812.     MOVE    D0,D1
  813.     ADD    D0,D0
  814.     ADD    D0,D0
  815.     ADD    D1,D0
  816.     AND.B    #$0F,D2
  817.     ADD.B    D2,D0
  818.     CMP.B    #63,D0
  819.     BHI.S    mt_pj2
  820.     MOVE.B    D0,mt_PBreakPos
  821.     ST    mt_PosJumpFlag
  822.     RTS
  823.  
  824. mt_SetSpeed
  825.     MOVE.B    3(A6),D0
  826.     BEQ.W    mt_Return2
  827.     CLR.B    mt_counter
  828.     MOVE.B    D0,mt_speed
  829.     RTS
  830.  
  831. mt_CheckMoreEfx
  832.     BSR.W    mt_UpdateFunk
  833.     MOVE.B    2(A6),D0
  834.     AND.B    #$0F,D0
  835.     SUB.B    #9,D0
  836.     BEQ.W    mt_SampleOffset
  837.     SUBQ    #2,D0
  838.     BEQ.W    mt_PositionJump
  839.     SUBQ    #1,D0
  840.     BEQ.B    mt_VolumeChange
  841.     SUBQ    #1,D0
  842.     BEQ.S    mt_PatternBreak
  843.     SUBQ    #1,D0
  844.     BEQ.S    mt_E_Commands
  845.     SUBQ    #1,D0
  846.     BEQ.S    mt_SetSpeed
  847.     BRA.W    mt_PerNop
  848.  
  849. mt_E_Commands
  850.     MOVE.B    3(A6),D0
  851.     AND.W    #$F0,D0
  852.     LSR.B    #4,D0
  853.     BEQ.S    mt_FilterOnOff
  854.     SUBQ    #1,D0
  855.     BEQ.W    mt_FinePortaUp
  856.     SUBQ    #1,D0
  857.     BEQ.W    mt_FinePortaDown
  858.     SUBQ    #1,D0
  859.     BEQ.S    mt_SetGlissControl
  860.     SUBQ    #1,D0
  861.     BEQ.B    mt_SetVibratoControl
  862.  
  863.     IF mt_finetuneused=1 THEN
  864.     SUBQ    #1,D0
  865.     BEQ.B    mt_SetFineTune
  866.     SUBQ    #1,D0
  867.  
  868.     ELSE
  869.     SUBQ    #2,D0
  870.     ENDC
  871.  
  872.     BEQ.B    mt_JumpLoop
  873.     SUBQ    #1,D0
  874.     BEQ.W    mt_SetTremoloControl
  875.     SUBQ    #2,D0
  876.     BEQ.W    mt_RetrigNote
  877.     SUBQ    #1,D0
  878.     BEQ.W    mt_VolumeFineUp
  879.     SUBQ    #1,D0
  880.     BEQ.W    mt_VolumeFineDown
  881.     SUBQ    #1,D0
  882.     BEQ.W    mt_NoteCut
  883.     SUBQ    #1,D0
  884.     BEQ.W    mt_NoteDelay
  885.     SUBQ    #1,D0
  886.     BEQ.W    mt_PatternDelay
  887.     BRA.W    mt_FunkIt
  888.  
  889. mt_FilterOnOff
  890.     MOVE.B    3(A6),D0
  891.     AND.B    #1,D0
  892.     ADD.B    D0,D0
  893.     AND.B    #$FD,$BFE001
  894.     OR.B    D0,$BFE001
  895.     RTS    
  896.  
  897. mt_SetGlissControl
  898.     MOVE.B    3(A6),D0
  899.     AND.B    #$0F,D0
  900.     AND.B    #$F0,31(A6)
  901.     OR.B    D0,31(A6)
  902.     RTS
  903.  
  904. mt_SetVibratoControl
  905.     MOVE.B    3(A6),D0
  906.     AND.B    #$0F,D0
  907.     AND.B    #$F0,30(A6)
  908.     OR.B    D0,30(A6)
  909.     RTS
  910.  
  911. mt_SetFineTune
  912.     MOVE.B    3(A6),D0
  913.     AND.B    #$0F,D0
  914.     MOVE.B    D0,18(A6)
  915.     RTS
  916.  
  917. mt_JumpLoop
  918.     TST.B    mt_counter
  919.     BNE.W    mt_Return2
  920.     MOVE.B    3(A6),D0
  921.     AND.B    #$0F,D0
  922.     BEQ.S    mt_SetLoop
  923.     TST.B    34(A6)
  924.     BEQ.S    mt_jumpcnt
  925.     SUBQ.B    #1,34(A6)
  926.     BEQ.W    mt_Return2
  927. mt_jmploop     MOVE.B    33(A6),mt_PBreakPos
  928.     ST    mt_PBreakFlag
  929.     RTS
  930.  
  931. mt_jumpcnt
  932.     MOVE.B    D0,34(A6)
  933.     BRA.S    mt_jmploop
  934.  
  935. mt_SetLoop
  936.     MOVE.W    mt_PatternPos(PC),D0
  937.     LSR    #2,D0
  938.     MOVE.B    D0,33(A6)
  939.     RTS
  940.  
  941. mt_SetTremoloControl
  942.     MOVE.B    3(A6),D0
  943.     AND.B    #$0F,D0
  944.     LSL.B    #4,D0
  945.     AND.B    #$0F,30(A6)
  946.     OR.B    D0,30(A6)
  947.     RTS
  948.  
  949. mt_RetrigNote
  950.     MOVE.L    D1,-(SP)
  951.     MOVE.B    3(A6),D0
  952.     AND.W    #$0F,D0
  953.     BEQ.S    mt_rtnend
  954.     MOVEQ    #0,d1
  955.     MOVE.B    mt_counter(PC),D1
  956.     BNE.S    mt_rtnskp
  957.     MOVE.W    (A6),D1
  958.     AND.W    #$0FFF,D1
  959.     BNE.S    mt_rtnend
  960.     MOVEQ    #0,D1
  961.     MOVE.B    mt_counter(PC),D1
  962. mt_rtnskp
  963.     DIVU    D0,D1
  964.     SWAP    D1
  965.     TST.W    D1
  966.     BNE.S    mt_rtnend
  967. mt_DoRetrig
  968.     MOVE.W    20(A6),$DFF096    ; Channel DMA off
  969.     MOVE.L    4(A6),(A5)    ; Set sampledata pointer
  970.     MOVE.W    8(A6),4(A5)    ; Set length
  971.     BSR.W    mt_WaitDMA
  972.     MOVE.W    20(A6),D0
  973.     BSET    #15,D0
  974.     MOVE.W    D0,$DFF096
  975.     BSR.W    mt_WaitDMA
  976.     MOVE.L    10(A6),(A5)
  977.     MOVE.L    14(A6),4(A5)
  978. mt_rtnend
  979.     MOVE.L    (SP)+,D1
  980.     RTS
  981.  
  982. mt_VolumeFineUp
  983.     TST.B    mt_counter
  984.     BNE.W    mt_Return2
  985.     MOVE.B    3(A6),D0
  986.     AND.W    #$F,D0
  987.     BRA.W    mt_VolSlideUp
  988.  
  989. mt_VolumeFineDown
  990.     TST.B    mt_counter
  991.     BNE.W    mt_Return2
  992.     MOVE.B    3(A6),D0
  993.     AND.W    #$0F,D0
  994.     BRA.W    mt_VolSlideDown2
  995.  
  996. mt_NoteCut
  997.     MOVE.B    3(A6),D0
  998.     AND.W    #$0F,D0
  999.     CMP.B    mt_counter(PC),D0
  1000.     BNE.W    mt_Return2
  1001.     CLR.B    19(A6)
  1002.     CLR.W    8(A5)
  1003.     RTS
  1004.  
  1005. mt_NoteDelay
  1006.     MOVE.B    3(A6),D0
  1007.     AND.W    #$0F,D0
  1008.     CMP.B    mt_Counter(PC),D0
  1009.     BNE.W    mt_Return2
  1010.     MOVE.W    (A6),D0
  1011.     BEQ.W    mt_Return2
  1012.     MOVE.L    D1,-(SP)
  1013.     BRA.W    mt_DoRetrig
  1014.  
  1015. mt_PatternDelay
  1016.     TST.B    mt_counter
  1017.     BNE.W    mt_Return2
  1018.     MOVE.B    3(A6),D0
  1019.     AND.W    #$0F,D0
  1020.     TST.B    mt_PattDelTime2
  1021.     BNE.W    mt_Return2
  1022.     ADDQ.B    #1,D0
  1023.     MOVE.B    D0,mt_PattDelTime
  1024.     RTS
  1025.  
  1026. mt_FunkIt
  1027.     TST.B    mt_counter
  1028.     BNE.W    mt_Return2
  1029.     MOVE.B    3(A6),D0
  1030.     AND.B    #$0F,D0
  1031.     LSL.B    #4,D0
  1032.     AND.B    #$0F,31(A6)
  1033.     OR.B    D0,31(A6)
  1034.     TST.B    D0
  1035.     BEQ.W    mt_Return2
  1036. mt_UpdateFunk
  1037.     MOVEM.L    D1/A0,-(SP)
  1038.     MOVEQ    #0,D0
  1039.     MOVE.B    31(A6),D0
  1040.     LSR.B    #4,D0
  1041.     BEQ.S    mt_funkend
  1042.     LEA    mt_FunkTable(PC),A0
  1043.     MOVE.B    (A0,D0.W),D0
  1044.     ADD.B    D0,35(A6)
  1045.     BTST    #7,35(A6)
  1046.     BEQ.S    mt_funkend
  1047.     CLR.B    35(A6)
  1048.  
  1049.     MOVE.L    10(A6),D0
  1050.     MOVEQ    #0,D1
  1051.     MOVE.W    14(A6),D1
  1052.     ADD.L    D1,D0
  1053.     ADD.L    D1,D0
  1054.     MOVE.L    36(A6),A0
  1055.     ADDQ.L    #1,A0
  1056.     CMP.L    D0,A0
  1057.     BLO.S    mt_funkok
  1058.     MOVE.L    10(A6),A0
  1059. mt_funkok
  1060.     MOVE.L    A0,36(A6)
  1061.     NEG.B    (A0)
  1062.     SUBQ.B    #1,(A0)
  1063. mt_funkend
  1064.     MOVEM.L    (SP)+,D1/A0
  1065.     RTS
  1066.  
  1067. mt_WaitDMA
  1068.     MOVEQ    #3,D0
  1069. mt_WaitDMA2
  1070.     MOVE.B    $DFF006,D1
  1071. mt_WaitDMA3
  1072.     CMP.B    $DFF006,D1
  1073.     BEQ.S    mt_WaitDMA3
  1074.     DBF    D0,mt_WaitDMA2
  1075.     RTS
  1076.  
  1077. mt_FunkTable dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128
  1078.  
  1079. mt_VibratoTable    
  1080.     dc.b   0, 24, 49, 74, 97,120,141,161
  1081.     dc.b 180,197,212,224,235,244,250,253
  1082.     dc.b 255,253,250,244,235,224,212,197
  1083.     dc.b 180,161,141,120, 97, 74, 49, 24
  1084.  
  1085. mt_PeriodTable
  1086. ; Tuning 0, Normal
  1087.     dc.w    856,808,762,720,678,640,604,570,538,508,480,453
  1088.     dc.w    428,404,381,360,339,320,302,285,269,254,240,226
  1089.     dc.w    214,202,190,180,170,160,151,143,135,127,120,113
  1090. ; Tuning 1
  1091.     dc.w    850,802,757,715,674,637,601,567,535,505,477,450
  1092.     dc.w    425,401,379,357,337,318,300,284,268,253,239,225
  1093.     dc.w    213,201,189,179,169,159,150,142,134,126,119,113
  1094. ; Tuning 2
  1095.     dc.w    844,796,752,709,670,632,597,563,532,502,474,447
  1096.     dc.w    422,398,376,355,335,316,298,282,266,251,237,224
  1097.     dc.w    211,199,188,177,167,158,149,141,133,125,118,112
  1098. ; Tuning 3
  1099.     dc.w    838,791,746,704,665,628,592,559,528,498,470,444
  1100.     dc.w    419,395,373,352,332,314,296,280,264,249,235,222
  1101.     dc.w    209,198,187,176,166,157,148,140,132,125,118,111
  1102. ; Tuning 4
  1103.     dc.w    832,785,741,699,660,623,588,555,524,495,467,441
  1104.     dc.w    416,392,370,350,330,312,294,278,262,247,233,220
  1105.     dc.w    208,196,185,175,165,156,147,139,131,124,117,110
  1106. ; Tuning 5
  1107.     dc.w    826,779,736,694,655,619,584,551,520,491,463,437
  1108.     dc.w    413,390,368,347,328,309,292,276,260,245,232,219
  1109.     dc.w    206,195,184,174,164,155,146,138,130,123,116,109
  1110. ; Tuning 6
  1111.     dc.w    820,774,730,689,651,614,580,547,516,487,460,434
  1112.     dc.w    410,387,365,345,325,307,290,274,258,244,230,217
  1113.     dc.w    205,193,183,172,163,154,145,137,129,122,115,109
  1114. ; Tuning 7
  1115.     dc.w    814,768,725,684,646,610,575,543,513,484,457,431
  1116.     dc.w    407,384,363,342,323,305,288,272,256,242,228,216
  1117.     dc.w    204,192,181,171,161,152,144,136,128,121,114,108
  1118. ; Tuning -8
  1119.     dc.w    907,856,808,762,720,678,640,604,570,538,508,480
  1120.     dc.w    453,428,404,381,360,339,320,302,285,269,254,240
  1121.     dc.w    226,214,202,190,180,170,160,151,143,135,127,120
  1122. ; Tuning -7
  1123.     dc.w    900,850,802,757,715,675,636,601,567,535,505,477
  1124.     dc.w    450,425,401,379,357,337,318,300,284,268,253,238
  1125.     dc.w    225,212,200,189,179,169,159,150,142,134,126,119
  1126. ; Tuning -6
  1127.     dc.w    894,844,796,752,709,670,632,597,563,532,502,474
  1128.     dc.w    447,422,398,376,355,335,316,298,282,266,251,237
  1129.     dc.w    223,211,199,188,177,167,158,149,141,133,125,118
  1130. ; Tuning -5
  1131.     dc.w    887,838,791,746,704,665,628,592,559,528,498,470
  1132.     dc.w    444,419,395,373,352,332,314,296,280,264,249,235
  1133.     dc.w    222,209,198,187,176,166,157,148,140,132,125,118
  1134. ; Tuning -4
  1135.     dc.w    881,832,785,741,699,660,623,588,555,524,494,467
  1136.     dc.w    441,416,392,370,350,330,312,294,278,262,247,233
  1137.     dc.w    220,208,196,185,175,165,156,147,139,131,123,117
  1138. ; Tuning -3
  1139.     dc.w    875,826,779,736,694,655,619,584,551,520,491,463
  1140.     dc.w    437,413,390,368,347,328,309,292,276,260,245,232
  1141.     dc.w    219,206,195,184,174,164,155,146,138,130,123,116
  1142. ; Tuning -2
  1143.     dc.w    868,820,774,730,689,651,614,580,547,516,487,460
  1144.     dc.w    434,410,387,365,345,325,307,290,274,258,244,230
  1145.     dc.w    217,205,193,183,172,163,154,145,137,129,122,115
  1146. ; Tuning -1
  1147.     dc.w    862,814,768,725,684,646,610,575,543,513,484,457
  1148.     dc.w    431,407,384,363,342,323,305,288,272,256,242,228
  1149.     dc.w    216,203,192,181,171,161,152,144,136,128,121,114
  1150.  
  1151. mt_chan1temp    blk.l    5
  1152.         dc.w    1
  1153.         blk.w    21
  1154.         dc.w    2
  1155.         blk.w    21
  1156.         dc.w    4
  1157.         blk.w    21
  1158.         dc.w    8
  1159.         blk.w    11
  1160.  
  1161. mt_SampleStarts    blk.l    31,0
  1162.  
  1163. mt_SongDataPtr    dc.l 0
  1164. mt_LWTPtr    dc.l 0
  1165. mt_oldirq    dc.l 0
  1166.  
  1167. mt_speed    dc.b 6
  1168. mt_counter    dc.b 0
  1169. mt_SongPos    dc.b 0
  1170. mt_PBreakPos    dc.b 0
  1171. mt_PosJumpFlag    dc.b 0
  1172. mt_PBreakFlag    dc.b 0
  1173. mt_LowMask    dc.b 0
  1174. mt_PattDelTime    dc.b 0
  1175. mt_PattDelTime2    dc.b 0,0
  1176. mt_PatternPos    dc.w 0
  1177. mt_DMACONtemp    dc.w 0
  1178. mt_data:    incbin    "ram:1"
  1179.